home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 September & October / Amiga-CD 1996 #9-10.iso / demos / storm-c / stormc / liesmich < prev    next >
Encoding:
Text File  |  1996-07-02  |  43.3 KB  |  1,100 lines

  1. Willkommen zur StormC-Demoversion 1.1
  2.  
  3. [1m © HAAGE & PARTNER Computer GmbH [0m
  4.  
  5.   Mainzer Straße 10A
  6.   61191 Rosbach v.d.H.
  7.  
  8.   Tel: 0 60 07 / 93 00 50
  9.   Fax: 0 60 07 / 75 43
  10.  
  11.   Compuserve: 100654,3133
  12.   Internet: 100654.3133@compuserve.com
  13.   Homepage: http://ourworld.compuserve.com/homepages/haage_partner
  14.  
  15.  
  16. Bereits zur Computer 95 im November 95 war eine Vorversion unseres
  17. neuen Compilersystems erhältlich. Die verwirklichten Konzepte und 
  18. eingeflossenen neuen Innovationen haben auch die Presse überzeugt, wie
  19. Sie in einigen Berichten in den Januar- und Februar-Ausgaben der gängigen
  20. Amiga-Zeitschriften nachlesen können.
  21.  
  22. Hier nur einige Auszüge:
  23.  
  24. Amiga Plus 1/96
  25.  
  26.    Neue Konzepte bei Entwicklung und Qualitätssicherung...
  27.    Die erste Besonderheit ist die Projektverwaltung, die zum ersten
  28.    Mal bei einem solchen Paket nicht aufgesetzt wirkt...
  29.  
  30. Amiga Magazin 1/96
  31.    
  32.    Die Projektverwaltung: Endlich einmal ein Tool, das nicht wie ein Klotz 
  33.    am Bein wirkt, sondern wirklich nützlich ist.
  34.    
  35. Amiga Special 2/96
  36.  
  37.    Ein schneller Compiler, der leistungsstarke Debugger und die komfortable
  38.    Entwicklungsumgebung sind eine interessante Mischung, wenn es sich um 
  39.    professionelle Softwareentwicklung handelt...
  40.  
  41. Mit der beiliegenden Demoversion können Sie sich selbst davon überzeugen.
  42.  
  43. Einschränkungen der Demoversion:
  44. ================================
  45.  
  46. Der beiliegende Compiler wird Ihnen zwar große Sourcen durchkompilieren 
  47. aber lediglich maximal 10 KByte große Objektcodes schreiben. Sie haben
  48. damit zumindest die Gewißheit, daß Ihre großen Projekte auch kompiliert
  49. werden können.
  50.  
  51. Der Linker linkt aus den erzeugten Objekten ein Programm mit maximal 
  52. 20 KByte Größe.
  53.  
  54. Der Linker unterstützt auch nicht die Erzeugung von Shared-Libraries.
  55.  
  56. Alle Programmteile von StormC lassen sich NICHT über das CLI starten 
  57. sondern sind lediglich in der integrierten Umgebung nutzbar.
  58.  
  59. Wichtiges zur Installation:
  60. ===========================
  61.  
  62. Die vorliegenden Dateien sind dafür vorgesehen, von CD installiert zu 
  63. werden. Wenn Sie die Dateien bereits auf Ihre Festplatte kopiert haben
  64. ist eine Installation nicht notwendig. Sie müssen dann lediglich einen 
  65. StormC-Assign in die Datei "user-startup" eintragen, damit die Demo-
  66. Sourcen und StormC-Voreinstellungen unverändert genutzt werden können.
  67. Desweiteren muß noch die "Wizard.Library" in das Verzeichnis LIBS:
  68. kopiert werden.
  69.  
  70. Include-Lizenzen:
  71. =================
  72.  
  73. Wenn Sie die Demoversion von einer Mailbox oder vom Aminet geladen 
  74. haben, liegen nur die Includes und Bibliotheken bei, deren Urheber-
  75. rechte bei uns liegen. Es fehlen die Systemincludes zu Kickstart/Work-
  76. bench 3.1. 
  77.  
  78. Woher bekommt man die Includes?
  79. -------------------------------
  80.  
  81. Wenn Sie die Demoversion direkt bei uns anfordern, werden selbstver-
  82. ständlich alle Includes und Bibliotheken mitgeliefert. Wir müssen
  83. allerdings eine Schutzgebühr von 20,- DM berechnen, die Ihnen jedoch 
  84. beim Kauf einer Vollversion von StormC angerechnet wird. Bei einer 
  85. Bestellung per Nachnahme erhöht sich der Preis um die Nachnahmegebühren
  86. von 13,- DM.
  87.  
  88. Desweiteren finden Sie die kompletten Includes und Bibliotheken auf den 
  89. CDs des Amiga-Magazins.
  90.  
  91. Vielleicht haben Sie aber auch bereits die Preview-Version unseres 
  92. StormC-Compilers. Dann haben Sie ebenfalls bereits die Includes 
  93. erhalten und müssen in der Demoversion lediglich folgende Dateien 
  94. ergänzen:
  95.  
  96. In den Includes die kompletten Verzeichnisse:
  97.  
  98.     datatypes
  99.     devices
  100.     diskfont
  101.     dos
  102.     exec
  103.     gadgets
  104.     graphics
  105.     hardware
  106.     intuition
  107.     libraries
  108.     prefs
  109.     resources
  110.     rexx
  111.     utility
  112.     workbench
  113.     
  114. In den Libs die Bibliothek:
  115.  
  116.     amiga.lib
  117.     small.lib
  118.     debug.lib
  119.     ddebug.lib
  120.  
  121. Bitte verwenden Sie nicht einfach die Includes im Verzeichnis
  122. eines anderen Compilers oder direkt von unserer Preview-Version.
  123. Es wurden einige Änderungen an den, der aktuellen Demoversion
  124. mitgelieferten Dateien vorgenommen, so daß nur die beschriebene 
  125. Vorgehensweise zum Erfolg führt.
  126.  
  127.  
  128. Änderungen und Erweiterungen gegenüber der Preview-Version:
  129. ===========================================================
  130.  
  131. Allgemeine
  132. ----------
  133.  
  134. Die komplette Umgebung ist nun lokalisiert. Die voreingestellte 
  135. Sprache ist Englisch. Bei der Installation wird automatisch der
  136. deutschsprachige Catalog kopiert und auch genutzt, wenn Sie 
  137. Workbenck-Lokalisierung deutschsprachig eingestellt haben.
  138.  
  139. Möchten Sie trotz deutschsprachiger Workbench, mit StormC englisch-
  140. sprachig arbeiten, genügt es die Locale-Datei im Verzeichnis
  141. "StormC:StormSYS/CATALOGE/Deutsch/StormCPP.catalog" umzubenennen.
  142.  
  143. Programmstart:
  144. --------------
  145.  
  146. Entgegen der Beschreibung im Handbuch auf der Seite 12 wird das Start-
  147. bild nicht angezeigt, wenn für Ihren Workbench-Screen weniger als 
  148. 64 Farben eingestellt sind. In diesem Fall erscheint ein kleines Fenster,
  149. das Sie darauf hinweist, daß das System noch geladen wird.
  150.  
  151. Nach dem Laden erscheint ein weiteres Fenster, das Sie darüber informiert, 
  152. welche Version Sie benutzen.
  153.  
  154. Projektverwaltung (StromShell):
  155. -------------------------------
  156.  
  157. Bei "Datei(en) hinzufügen" ist eine mehrfache Selektion in der Dateiauswahl
  158. möglich.
  159.  
  160. In die Projektfenster können Workbench-Piktogramme (Appwindow) abgelegt 
  161. werden.
  162.  
  163. Ist ein Sektionstitel markiert, wenn der Menüpunkt "Löschen" angewählt wird,
  164. erfolgt die Rückfrage, ob der Inhalt der ganzen Sektion gelöscht werden soll.
  165. Beantworten Sie die Rückfrage mit "JA", wird die komplette Sektion entfernt.
  166. Die jeweiligen Dateien bleiben selbstverständlich unberührt.
  167.  
  168. Wird das Debug-Piktogramm oder der Menüpunkt "Debug..." angewählt, obwohl die
  169. Option zum Erzeugen von Debugger-Dateien im Projekt nicht angewählt sind, 
  170. erfolgt eine Rückfrage, ob große oder kleine Debug-Dateien angelegt werden 
  171. sollen. Die Projekt-Einstellungen bleiben allerdings unbeeinflußt.
  172.  
  173. Bei Klick auf die Knöpfe "Start..." und "Debug..." aus dem Fehlerfenster, 
  174. wird das Fehlerfenster zuerst geschlossen und dann die entsprechende Programm-
  175. funktion ausgeführt.
  176.  
  177. Beim "Make" bereits übersetzter Projekte wird jetzt zurückgefragt, ob nur 
  178. gelinkt oder das ganze Projekt neu kompiliert werden soll.
  179.  
  180. Der neue Menüpunkt "Bibliothek(en) hinzufügen..." entspricht dem Menüpunkt
  181. "Datei(en) hinzufügen...", setzt aber den Bibliothekssuchpfad des Projekts
  182. als Verzeichnis im ASL-Filerequester und das Pattern "#?.lib". Dadurch
  183. lassen sich deutlich schneller Bibliotheken zum Projekt hinzunehmen.
  184. Einziges Problem: Mehrfachselektionen werden immer alphabetisch sortiert 
  185. vom ASL-Requester zurückgegeben, die relevante Reihenfolge von 
  186. Bibliotheken kann man also nur erhalten, wenn man jeweils eine Bibliothek 
  187. nach der anderen zum Projekt hinzufügt.
  188.  
  189. Werden Dateien hinzugefügt, die noch nicht existieren, so wird auf Wunsch
  190. die Datei "leer" erzeugt. Als Icon wird jeweils versucht das Icon
  191. "ENV:STORMCPP/def_text.suffix" zu übernehmen, wobei für ".suffix" das Suffix
  192. des Dateinamens eingesetzt wird (z.B. .c oder .h). Dadurch lassen sich
  193. für verschiedene Textarten verschiedene Piktogramme und Texteinstellungen
  194. verwenden.
  195.  
  196. Die Einstellungen können nun auch von der StormShell gesichert und geladen
  197. werden.
  198.  
  199. Für den Linker wurden zwei neue Seiten in den Projekteinsteller eingefügt.
  200. Eine weitere erhielt der Optimizer des Compilers.
  201.  
  202. Beim Programmstart kann so ziemlich jeder Parameter der Shell-Umgebung
  203. eingestellt werden.
  204.  
  205. Die Codegröße des Executables wird nun nach jedem Compilerlauf neu angezeigt.
  206. Die Codegröße von Bibliotheken wird nun auch angezeigt, wenn die Bibliothek
  207. aus dem Suchpfad der Bibliotheken stammt.
  208.  
  209. Die Einstellung für 32-bit-korrekte-Multiplikation ist entfallen. Der Compiler 
  210. entscheidet selbständig wann welche Multiplikation benötigt wird.
  211.  
  212. Bei den Einstellern zum C/C+-Compiler ist die Möglichkeit hinzugekommen,
  213. das kleine oder große Code-Modell zu wählen. Der Compiler und der Linker 
  214. generieren dann kurze Sprünge (bsr). 
  215.  
  216. Hinweis: Zur aktuellen Demoversion werden allerdings keine Bibliotheken
  217. geliefert, die ein kleines Code-Modell unterstützen. Bei eingeschalteter 
  218. Option werden Ihre Programm demnach nicht lauffähig sein.
  219.  
  220. Bei "Make" und "Compile" werden nun alle Quelltexte automatisch gesichert.
  221.  
  222. Die Funktionen der Iconleiste sind nun mit den Funktionstasten F1 bis F6 und
  223. F7 bis F10 erreichbar.
  224.  
  225. Das About-Fenster und das Einstellungsfenster kann auch mit ESC geschlossen
  226. werden. Weitere Shortcuts für About sind "o" und <Return>. Der Use- und der
  227. Cancel-Knopf des Einstellungsfensters sind auch über ihre Shortcuts bedienbar.
  228.  
  229. Das Fehlerfenster ist nun tastatursteuerbar: Die Shortcuts für "Run", "Debug"
  230. und "Cancel" sind implementiert. Wenn gerade ein "Make" läuft, kann man es 
  231. auch mit <ESC> abbrechen, danach, bzw. wenn kein "Make" läuft, wird das 
  232. Fenster durch <ESC> geschlossen. Mit "w" kann man die Warnungen an- und 
  233. ausschalten.
  234. Per Cursor läuft man durch die Fehlerliste, per <Alt>-Cursor erreicht man
  235. die erste oder letzte Fehlermeldung. <Return> zeigt die Fehlermeldung im
  236. Editor an. 
  237.  
  238. Das Projektfenster ist komplett tastatursteuerbar. Alle 4 Cursortasten
  239. bewegen den Cursor und den Inhalt entsprechend, <Alt> <hoch>/<runter> ermöglicht
  240. den Sprung an den Anfang/Ende der Einträge, <Shift> <rechts>/<links> an den
  241. rechten oder linken Rand. <Return> führt die Aktion entsprechend eines 
  242. Doppelklicks aus, <Alt> <Return> die jeweilige Alternative (bisher nur beim
  243. Executable belegt). Backspace bzw. Delete löschen den Eintrag des Cursor
  244. aus dem Projekt und setzen den Cursor auf den nachfolgenden Eintrag.
  245.  
  246. Debugger (StormRUN):
  247. --------------------
  248.  
  249. Das im Handbuch beschriebene Debugger-Demo ist leider nur ab 
  250. Betriebssystem V39 lauffähig. Wenn Sie V37/38 installiert haben, sollten
  251. Sie mit dem Gadtools-Demo probieren.
  252.  
  253. Der Menüeintrag "Programm sichern als..." (Seite 42) ist in der 
  254. aktuellen Version nicht enthalten, da eine Änderung am Linker eine 
  255. entsprechende Funktionalität verhindert hat.
  256.  
  257. Variablenwerte einfacher Zahl-Typen (char bis long) können in allen
  258. Variablen- und Inspektionsfenstern geändert werden.
  259.  
  260. Die Wertausgabe ist deutlich schneller, da nur noch die Werte 
  261. konvertiert werden, die sich geändert haben.
  262.  
  263. Die möglichen Breakpoints werden jetzt gefiltert, so daß pro Quelltext-
  264. zeile nur noch max. ein Breakpoint steht, d.h. jeder Schritt führt auf 
  265. eine nächste Zeile.
  266.  
  267. In einem Fall des Breakpoint-Löschens wurde der Cache nicht gelöscht, was
  268. Probleme auf 68040-Rechner zur Folge hatte.
  269.  
  270. Ein Hexeditor ist eingebaut. Es kann zwischen Byte-, Word- und 
  271. Longanzeige hin- und hergeschaltet werden. Die Eingabe von Adressen
  272. (sowohl im Gadget wie auch direkt im Text), Hexdaten und ASCII Daten 
  273. ist möglich. Wie im restlichen Debugger wird nur dort etwas angezeigt, bzw
  274. geändert werden, wo gültiges RAM vorhanden ist. Das verhindert
  275. Enforcerhits, aber verbietet auch den Zugriff auf I/O-Bausteine.
  276.  
  277. Mit der TAB-Taste kann der Cursor von der Adresspalte auf die Hex- und 
  278. ASCII-Daten-Spalte und wieder zurück gesetzt werden. Wird in der 
  279. Adresspalte die dort angegebene Adresse überschrieben, springt der 
  280. Hexeditor automatisch zu der Adresse.
  281.  
  282. Bei "Save Settings" ("Einstellungen Speichern") werden die Fensterposition 
  283. und -größe des Hexeditors auch gespeichert. 
  284.  
  285. Das "Casting" funktioniert. Dazu wurde das Cycle-Gadget in den Variablen-
  286. fenstern gegen ein Stringgadget ausgetauscht (in einer Objektdatei 
  287. können schnell mal > 100 Typen auftauchen - mit einem Cyclegadget ist das 
  288. nicht handhabbar). Bislang muß in dieses Stringgadget der Typ exakt so eingetippt werden, wie
  289. er ausgegeben würde. 
  290.  
  291. Wenn eine Adresse illegal ist, wird jetzt die betroffene Adresse ausgegeben
  292. (statt "--").
  293.  
  294. Die Typ-Ausgabe kann bekanntlich in zwei Modi erfolgen: ANSI-C oder 
  295. AMIGA-C (mit ULONG, BYTE etc). Diese Unterscheidung kann der Compiler 
  296. leider nicht in den Debuginfos ablegen. Derzeit wird die AMIGA-C- 
  297. Schreibweise verwendet (kompakter).
  298.  
  299. Der Start des Programms ist jetzt systemkonformer und -kompatibler. Auch
  300. Aufrufe von Execute() oder SystemTagList() funktionieren jetzt und,
  301. wenn als Ausgabe die Console gewählt wird, kommen Ausgaben der
  302. Befehle auch auf die Console. Das Programm erscheint jetzt auch in der Liste 
  303. der CLIs, einen Kommandonamen in den Projekteinstellungen anzugeben ist also 
  304. sinnvoll.
  305.  
  306. Das Resource-Tracking ist nun implementiert. Am Ende des Programms oder nach 
  307. einem Kill werden bisher Screens, Windows, Memory, Libraries, Locks und 
  308. Files angezeigt, die nicht geschlossen oder freigegeben wurden. Ein 
  309. Doppelklick in die Liste führt an die Stelle des Funktionsaufruf. Das 
  310. neue Menü "Debug" enthält einen Menüpunkt "Flush Resources" 
  311. ("Ressourcen freigeben") zur Freigabe dieser Ressourcen. 
  312.  
  313. In manchen Programmen werden sehr viele Ressourcen alloziert, insbesondere
  314. natürlich Speicher. Solche Ressourcen, die also keinen direkten 
  315. Funktionsaufruf im Programm besitzen werden nicht angezeigt, aber dennoch
  316. freigegeben. 
  317. Ein schönes Beispiel hierfür kann mit der ASL-Library verdeutlicht werden.
  318. Wenn Sie ein Programm "killen", währen ein ASL-Requester offen ist, wird 
  319. das ASL-Fenster geschlossen, obwohl der OpenWindow-Aufruf nicht aus Ihrem
  320. Programm sondern aus der ASL-Library gemacht wurde.
  321.  
  322. Das Ressource-Tracking kann nur den unmittelbare "Caller" ermitteln. 
  323. D.h. die Funktion, die den jsr d(a6) enthält. Schon eine Stub-Funktion 
  324. für Library-Aufrufe verhindert deshalb die korrekte Anzeige des Aufrufs. 
  325. Deshalb ist es angeraten Stub-Funktionen zu vermeiden und "pragma amicall"- 
  326. und "tagcall"-Aufrufe zu verwenden.
  327.  
  328.  
  329. Editor:
  330. =======
  331.  
  332. Help-Funktion
  333. -------------
  334.  
  335. Mit drücken der Help Taste kann man das Wort unter dem Cursor an die
  336. AmigaGuide-Library übergeben. AmigaGuide wird dann veranlaßt,
  337. das Schlüsselwort zu suchen und den Hilfetext anzuzeigen!
  338.  
  339. Für den Editor wurden zwei neue Menüpunkte eingeführt: 
  340. 1. Einstellungen für den Editor allgemein...
  341. 2. ...und für jeden Text im besonderen.
  342.  
  343. Folgende Editoreinstellungen werden, wie im Fenster zu sehen, bereits
  344. unterstützt: Autosave, Backups, Strip EOL Blanks und Textfontwahl.
  345.  
  346. Autosave kennt zwei Algorithmen: 
  347. Entweder wird alle "n" Minuten ein normales Save durchgeführt, oder 
  348. es wird der Text in eine Extradatei gesichert. Der Name dieser 
  349. Extradatei wird automatisch durch dem Namen des Dokuments mit einem
  350. angehängten ";0" erzeugt. 
  351.  
  352. Das Sichern in diese Extradatei verändert natürlich nicht den 
  353. Textnamen und setzt auch nicht das Modify-Flag "M" zurück.
  354.  
  355. Zusätzlich kann man beim automatischen Sichern nachfragen lassen, ob 
  356. gesichert werden soll. 
  357.  
  358. Hat der Text keinen Namen, wird der Benutzer aufgefordert, den Text zu 
  359. sichern, ein Autosave wird dann nicht mehr durchgeführt. Beim Laden eines 
  360. Textes wird überprüft, ob eine Autosave-Datei jüngeren Datums existiert, in
  361. diesem Fall bekommt der Benutzer die Wahl welche Datei er laden will, als
  362. Textname wird in beiden Fällen der Originaldateiname gewählt.
  363.  
  364. Man kann bis zu 9 Backup-Dateien anlegen. Bei jedem Sichern des Textes (auch
  365. bei Autosave auf die Originaldatei) werden die Backup-dateinamen hochgezählt
  366. (die älteste Datei geht dabei eventuell verloren). Die Namen der Backup-
  367. Dateien
  368. ergeben sich aus dem Namen der Originaldatei mit angehängtem ";N", wobei
  369. "N" eine Ziffer zwischen 1 und 9 ist. Die älteste Datei ist die Datei mit
  370. der höchsten Nummer, die jüngste mit der Nummer 1.
  371.  
  372. Beim Sichern kann man alle "white spaces", d.h. insb. Spaces und Tabs am
  373. Ende der Textzeilen entfernen lassen. 
  374.  
  375. Als Zeichensatz kann jeder nicht-proportionale Zeichensatz angegeben werden.
  376.  
  377. Achtung: Momentan wird noch keine Fehlermeldung ausgegeben, wenn ein
  378. ungültiger (d.h. nicht existierender oder proportionaler) Zeichensatz
  379. angegeben wird. Es ist empfehlenswert wirklich Zeichensätze auszuwählen,
  380. deren Zeichen alle gleich breit sind. Dies gilt z.B. nicht für den Courier-
  381. Zeichensatz, manche Zeichen sind breiter als die im Font angegebene Breite.
  382. Dadurch kann es zu leichten Darstellungsfehlern am Rand des Texts kommen.
  383.  
  384. Die Tabulatorweite kann eingestellt werden und wird mit dem Tooltype 
  385. TABWIDTH gespeichert.
  386.  
  387. Automatische Einrückungen können durch "{" und "}" ausgelöst werden. 
  388. Bislang wird nur eingerückt (d.h. nur auf das Zeichen "{" reagiert). 
  389. Man kann wählen, ob Spaces oder Tabs eingefügt werden, und wieviel 
  390. jeweils.
  391.  
  392. Dabei werden 2 Methoden und ihre Kombinationen unterstützt:
  393.  
  394. 1. Vor der Klammer eingerückt bedeutet, daß beim Eingeben der Klammer 
  395.    diese eingerückt wird, wenn vor der Klammer nur Spaces oder Tabs in 
  396.    der Zeile stehen. Nach der Klammer wird nach dem nächsten Zeilenum-
  397.    bruch eingerückt, wenn die Klammer das letzte Zeichen der vorherigen 
  398.    Zeile ist.
  399.  
  400. Man kann auswählen, welche Lexika eingefärbt werden und die Syntaxein-
  401. färbungen für C/C++ Kommentare, Strings, Char-Konstanten und Zahl-Konstanten. 
  402.  
  403. Die Einfärbung von C-Kommentaren (/* Test */) funktioniert mit
  404. Einschränkungen: 
  405.  
  406.    geschachtelte Kommentare sind nicht möglich (werdem allerdings vom 
  407.    Compiler auch nicht unterstützt, #if 0 ... #endif macht das auch 
  408.    besser).
  409.  
  410.    Die gesamte Einfärberei hat einige Einschränkungen, die jetzt erst 
  411.    mit den C-Kommentaren wirklich zum Vorschein kommen: Verschachtelte 
  412.    Einfärbungen, z.B. C++-Kommentare, die in einem C-Kommentar stehen, 
  413.    können die Einfärbung durcheinander bringen. Werden die einzelnen 
  414.    Einfärbungen ausgeschaltet, so wird nur die Farbe ausgeschaltet, 
  415.    die Farbmarkierungen werden dennoch gesetzt.
  416.  
  417.    Also werden z.B. in einem C-Kommentar stehende Strings oder Lexika-
  418.    wörter nicht eingefärbt, egal ob die Einfärbung von C-Kommentaren an 
  419.    oder aus ist. Genauso bringt das Ausschalten der Einfärbungen zur Zeit
  420.    keinen Geschwindigkeitszuwachs.
  421.  
  422. Die Editoreinstellungen werden unter dem Namen "StormSettings.ED" 
  423. gespeichert. In dieser ASCII Datei stehen in den letzten Zeilen die 
  424. Farben und Register dieser Syntaxeinfärbungen entsprechend der 
  425. Reihenfolge im Texteinstellungsfenster und der Syntax, wie sie auch 
  426. in den Lexikadateien verwendet wird.
  427.  
  428. Die Gadgets im Editorfenster sind auch über Tastatur steuerbar. Der
  429. Shortcut ist natürlich von der Lokalisierung abhängig, sollte aber immer
  430. den Qualifier "ctrl" enthalten, um Konflikte mit anderen Shortcuts zu 
  431. vermeiden. Der Qualifier "ctrl" wird auch extra behandelt um Konflikte 
  432. mit Texteingaben zu vermeiden (was insbesondere CTRL-I und CTRL-M 
  433. betrifft, die jetzt nicht mehr äquivalent zu TAB und RETURN sind).
  434.  
  435. Zwischen der Modified-Anzeige und der Cursorspalten-Anzeige befindet sich
  436. jetzt eine Hilfezeile für alle Gadgets.
  437.  
  438. Um wirklich von einer 100%igen Tastaursteuerbarkeit zu reden fehlt noch 
  439. die Möglichkeit, zwischen den Textfenstern zu springen (bzw. auch die
  440. Projektfenster aktivieren zu können).
  441.  
  442. Das Find&Replace-Fenster ist nun auch vollständig tastatursteuerbar. Beim
  443. Öffnen des Fensters ist immer das Find-Stringgadget aktiv. Mit <Return> oder
  444. <Tab> wird der String gesucht und das Replace-Gadget aktiviert. 
  445. Dort wird mit <Return> oder <Tab> wieder das Findgadget aktiviert. Aus diesen 
  446. Stringgadgets heraus kann man alle anderen Gadgets dennoch durch die 
  447. Shortcuts bedienen, wahlweise mit der rechten oder auch linken Amiga-Taste 
  448. (die linke Amiga-Taste wird erlaubt um Konflikte mit Shortcuts von 
  449. Programmen wie NewEdit zu vermeiden, die einen Großteil aller Shortcuts 
  450. für sich belegen). Die Shortcuts der Cycle- und Checkboxgadgets 
  451. reaktivieren das Stringgadget wieder, die Shortcuts der Buttons aktivieren
  452. das Texteditorfenster. Will man also einen Text suchen und danach in das 
  453. Textfenster zurückkehren, so sollte man die Suche mit dem Shortcut von 
  454. "Find" (rcommand f) auslösen. <ESC> schließt das Find&Replace-Fenster und 
  455. aktiviert das Textfenster.
  456.  
  457. Die Funktionen aus der StormShell-Toolbar können auch aus dem Editor mit 
  458. den Funktionstasten aufgerufen werden.
  459.  
  460. Eine einfache Print-Funktion ist eingebaut: der ganze Text kann ausgedruckt
  461. werden, dabei wird ein Progress-Fenster angezeigt, in dem der Druck auch
  462. abgebrochen werden kann. 
  463.  
  464. Tastaturbelegung:
  465. -----------------
  466.  
  467. Shift-Cursor Up/Down
  468.     Bewegt den Cursor auf die erste/letzte Zeile, die im Fenster angezeigt
  469.     ist.
  470.     
  471. Shift-Cursor Left/Right
  472.     Bewegt den Cursor auf die erste/letzte Spalte in der aktuellen Zeile.
  473.     
  474. Alt-Cursor Up/Down
  475.     Springt an den Anfang/ans Ende des Textes.
  476.  
  477. Alt-Cursor Left/Right
  478.     Bewegt den Cursor auf das nächste Wort vor oder auf das letzte hinter
  479.     dem Cursor.
  480.  
  481. Shift-Delete oder Shift-Backspace
  482.     Löscht die Zeile, auf der der Cursor steht. Die Zeile wird in die Zwischen-
  483.     ablage gespeichert.
  484.  
  485. Alt-Delete
  486.     Löscht die Zeile ab der Cursor-Position bis zum Ende der Zeile.
  487.  
  488. Alt-Backspace
  489.     Löscht den Text zwischen der ersten Spalte bis zur Cursorposition.
  490.  
  491. Help
  492.     Schickt das Wort unter dem Cursor an die Hothelp-Library V3.0 (14. Feb 94).
  493.  
  494.  
  495. Compiler:
  496. ---------
  497.  
  498. Im Folgenden werden die Compileränderungen seit der Veröffentlichung 
  499. der Preview-Version aufgelistet.
  500.  
  501. Im ASM-Source wurde bei DS.B o.ä. die allokierte Speichergröße
  502. nur als 16-Bit-Zahl ausgegeben.
  503.  
  504. Ab 68020 wird der Befehl EXTB.L unterstützt.
  505.  
  506. Durch Probleme bei Fließkomma-Konstanten mit angehängtem "f" 
  507. (z.B. "0.5f") kam es gelegentlich zur Ausgabe von unsinnigen Werten.
  508.  
  509. Konstrukt "#if defined (xxx)" (die Variante mit Klammern hinter dem
  510. define) führte zu einer Compiler-Panik.
  511.  
  512. Konvertierung von "unsigned short"/"unsigned byte" auf einen längeren
  513. Typ geschah mittels AND und falscher Bitmaske (genau invers).
  514.  
  515. Konvertierung von "unsigned byte" auf einen vorzeichenbehafteten
  516. Ganzzahltypen geschah fälschlich mittels EXT.
  517.  
  518. Aufruf virtueller Funktionen bei Mehrfachvererbung: der
  519. "this"-Pointer der aufgerufenen Funktion wurde in der Variablen
  520. korrigiert, in der er gerade steht - auch wenn es sich dabei um
  521. eine noch benötigte Variable handelt.
  522.  
  523. "Rundungsfehler" bei Anordnung lokaler Variablen auf dem Stack
  524. führte u.U. zu Variablen an ungeraden Adressen und Stack Frames
  525. ungerader Größe.
  526.  
  527. "Geschmissene" Exceptions konnten im optimierten Modus meist nicht
  528. mehr aufgefangen werden.
  529.  
  530. Variable "sym_handlers" (wichtig fürs Exception Handling!) wird
  531. jetzt im Small-Data-Model auch A4-relativ adressiert (endlich
  532. eine sinnvolle Verbindung von Small Data Model und OO-Programmierung).
  533.  
  534. Wurde in einem Destruktor einer Klasse, die einen Member oder
  535. eine Basisklasse mit Destruktor besitzt, eine Inline-Funktion
  536. aufgerufen, so wurde vom Ende der Inline-Funktion direkt an das
  537. Ende des Destruktors (zur Destruierung von Membern und Basen)
  538. gesprungen.
  539.  
  540. Beim Abtesten einzelner Bits in Bitfeldern wurde auf das falsche
  541. Bit zugegriffen, was sich auf Umwegen auch beim Konstruieren und
  542. Destruieren virtueller Basisklassen bemerkbar machte.
  543.  
  544. Als Basiszeiger für die double-Mathe-Lib wird jetzt
  545. "_MathIeeDoubBasBase" statt "lib_MathBase" verwendet.
  546.  
  547. Die Bibliotheksroutinen "lib_int2double" und "lib_double2int" wurden
  548. durch direkte Aufrufe von IEEEDPFix/IEEEDPFlt ersetzt.
  549.  
  550. Die Repräsentierung von "long long" wurde compilerseitig auf
  551. eine einleuchtendere Form umgestellt (normales Big Endian).
  552. Außerdem werden für entsprechende Operationen die
  553. Bibliotheksfunktionen Add64, Sub64, Neg64, Cmp64, UMult64,
  554. UDiv64, UMod64, SMult64, SDiv64, SMod64 aufgerufen.
  555.  
  556. Leere "_INIT_"-Funktionen werden nicht mehr erzeugt.
  557.  
  558. Bei numerischer Auswertung der Ausdrücke "i != 0" und "!i" wurde
  559. das Ergebnis fälschlich mit AND.W statt AND.L ausmaskiert.
  560.  
  561. Ein recht globaler Fehler in der Speicherverwaltung verursachte
  562. Adreßfehler auf 68000ern (und ungünstig align'te Daten auf
  563. allen anderen Amigas).
  564.  
  565. Innerhalb von Konstruktoren wurden generell keine virtuellen
  566. Funktionen aufgerufen, selbst wenn diese eindeutig nicht über
  567. "this" bezogen waren.
  568.  
  569. Fehler beim Zugriff auf Strukturen von mehr als 32 KByte Größe:
  570. Adreßoffsets >32767 wurden falsch codiert und führten zu einem
  571. Assemblerfehler.
  572.  
  573. [7mHier finden Sie die wichtigsten Änderungen gegenüber der Version 1.05:[0m
  574. ======================================================================
  575.  
  576. [1m[33mStormShell
  577. [0m
  578. - Kompakter und mit neuer Oberfläche
  579. - Neuer Optioneneinsteller mit erweiterten Optionen
  580. - Codebedingte Objektdateien-Ablage
  581. - Verhindern von Inline-Funktionen
  582. - Ignorieren von Exceptionspezifizieren
  583. - Ersetzung von nichtvorhandenen Funktionen durch eigene Stub-Funktion (rapid prototyping) 
  584. - Codefolding (Optimierung beim Linken) 
  585. - Anbinden von Binärdateien
  586. - Linkerunterstützung für StormWIZARD
  587. - Neue Debugger-Kontrollmöglichkeit
  588. - GoldED alternativ nutzbar!
  589.  
  590. [33mProjektverwaltung
  591. [0m
  592. - Sortieren von Sektionen
  593. - Sortieren innerhalb von Sektionen
  594. - Neue Sektion für StormWIZARD
  595. - Neue Tastaturfunktionalität
  596.  
  597. [33mStormEd
  598. [0m
  599. - Klammern-Check
  600. - Blockeinrückung
  601. - Farbeinsteller
  602. - New - Projekttemplate
  603.  
  604. [33mStormRun
  605. [0m
  606. - History- und Breakpointfenster
  607.  
  608. [33mStormC
  609. [0m
  610. - Neue Optimierungsstufe
  611. - Neues Schlüsselwort __saveds
  612.  
  613. [33mStormLibrarian
  614. [0m
  615. - Einfache Erzeugung von Linker-Bibliotheken
  616.  
  617. [33mStormShell
  618. [0m
  619. [3mMit neuer Oberfläche wesentlich kompakter![0m
  620.  
  621. StormC 1.1 ist komplett mit StormWIZARD überarbeitet.
  622. Die gesamte Oberfläche ist neu erstellt, was sich in der Geschwindig-
  623. keit und in der Grösse der einzelnen Programmteile stark bemerkbar
  624. macht.
  625.  
  626. War beispielsweise die StormShell in der alten Version noch über
  627. 500 KByte groß, so ist die aktuelle Version mit handlichen 
  628. 300 KByte enorm abgespeckt. Die Funktionalität muß darunter selbst-
  629. verständlich nicht leiden. Ganz im Gegenteil. 
  630.  
  631. [3mSortieren in der Projektverwaltung[0m
  632.  
  633. Einzelne Einträge in Projektsektionen oder auch ganze Sektionen
  634. können in der Reihenfolge schnell geändert (verschoben) werden.
  635. Ihre bevorzugte Sortierung in der Projektverwaltung wird gespeichert 
  636. und bei jedem Anlegen neuer Projekte automatisch berücksichtigt.
  637.  
  638. [3mNeue Projektsektionen[0m
  639.  
  640. Die Integration von StormWIZARD ist genau so perfekt, wie die Ein-
  641. bindung aller anderen Porgramme. Beim Hinzufuegen von durch 
  642. StormWIZARD erzeugten  Dateien (.wizard) wird die neue Sektion
  643. "StormWIZARD Schnittstelle" angelegt.
  644.  
  645. Bei Doppelklick auf den Eintrag wird StormWIZARD gestartet und die 
  646. gewählte Datei geladen. Die Integration aller Entwicklungskomponenten
  647. garantiert eine optimale Strukturierung und Organisation Ihrer 
  648. Projekte. 
  649.  
  650. [3mErweiterte Tastaturfunktionalität[0m
  651.  
  652. Die Unterstützung durch zusätzliche Tastaturqualifier in der 
  653. Projektverwaltung war bisher nur sehr stiefmütterlich behandelt.
  654. Bei Doppelklick auf den Programmnamen im Projekt und gleichzeitigem 
  655. Gedrückthalten der <ALT>-Taste wird das Programm automatisch im 
  656. Debug-Modus gestartet.<
  657.  
  658. Hinzu kam nun die Unterstützung von Datatypes. Bei Doppelklick auf 
  659. einen Eintrag in der Projektverwaltung und Gedrückthalten der 
  660. <ALT>-Taste wird Multiview gestartet und die Datei geladen. Ist nun 
  661. ein entsprechender Datatyp in Ihrem System installiert, wird die 
  662. Datei angezeigt.
  663.  
  664. Ein kleines Beispiel verdeutlicht, wie sinnvoll diese Erweiterung ist:
  665. Sie arbeiten an Ihrem Projekt und möchten auch eine AmigaGuide-
  666. Dokumentation erstellen. Am einfachsten fügen Sie hierfür einen neuen
  667. Eintrag in die Guide-Sektion ein. Bislang konnten Sie den Eintrag 
  668. zwar doppelklicken, um den Text dann mit dem Editor zu bearbeiten, 
  669. wollten Sie aber das Endergebnis sehen, mußte die Originaldatei 
  670. gesucht und doppeltgeklickt oder sogar Multiview manuell gestartet
  671. werden.
  672.  
  673. Mit der neuen Projektverwaltung genügt es, die <ALT>-Taste gedrückt-
  674. zuhalten, und den Eintrag in der AmigaGuide-Sektion doppelt zu 
  675. klicken. Daraufhin wird Multiview gestartet und Ihr AmigaGuide-
  676. Dokument in der Anwenderfassung angezeigt. Eine Arbeitserleichterung,
  677. um die wir von vielen Anwendern gebeten urden! 
  678.  
  679. [3mNeuer Optioneneinsteller mit erweiterten Optionen[0m
  680.  
  681. Der neue Optioneneinsteller wurde aufgeräumt und in seiner Bedienung
  682. wesentlich handlicher gestaltet. Die mit StormWIZARD verfügbaren 
  683. Karteikartenreiter verschaffen einen Ueberblick über alle Einstell-
  684. möglichkeiten.
  685.  
  686. [3mCodebedingte Objektdateien-Ablage[0m
  687.  
  688. Viele Anwender der Version 1.0 sind begeistert von unserer Projekt-
  689. verwaltung und der Möglichkeit, alles zum Projekt gehörige 
  690. strukturiert und überschaubar verwalten zu können. Selbstverständlich
  691. gibt es auch hierfür viele Erweiterungsmöglichkeiten, die uns genannt
  692. wurden.
  693.  
  694. Eine wichtige Erweiterung ist die Verwaltung verschiedener Versionen
  695. Ihres Projektes. Gemeint sind z.B. Versionen Ihres Programmes
  696. für verschiedene Prozessortypen. Bislang mußte das komplette Projekt
  697. neu kompiliert werden, was bei umfangreichen Projekten unter Umständen
  698. sehr lange dauern kann.
  699.  
  700. Die Version 1.1 bietet Ihnen die Möglichkeit, in jedem Projekt eine 
  701. Schublade anzugeben, in die die Objektdateien gespeichert werden 
  702. sollen. Für verschiedene Versionen genügt es nun, den einzelnen 
  703. Projekten unterschiedliche Schubladen für die Objektdateien anzugeben.
  704. Beispielsweise "68K-Code", "020-Code",
  705. "060-Code", usw...<BR>
  706. Da in den Schubladen immer die Objektdateien mit den entsprechenden 
  707. Optionen enthalten sind, werden immer nur die Module neu kompiliert,
  708. deren Quellcode tatsächlich geändert wurde!
  709.  
  710. [3mVerhindern von Inline-Funktionen[0m
  711.  
  712. Inline-Funktionen werden wie Makros direkt an der Stelle des Aufrufs
  713. im Quelltext eingefügt. Der Compiler spart damit den Aufruf der 
  714. Funktionen und kann daher extrem gut optimieren. Durch die Benutzung
  715. der Inline-Funktionen wird das Programm schneller und wenn man sich 
  716. auf kurze Inline-Funktionen beschränkt (z.B. das Auslesen des Wertes
  717. eines Attributs einer Klasse) auch kürzer.
  718.  
  719. In der Testphase können Inline-Funktion jedoch sehr störend sein, da
  720. es für den Debugger unmöglich ist, den Quelltext zu Inline-Funktionen
  721. anzuzeigen.
  722.  
  723. Mit dem Schalter kann der Compiler angewiesen werden, die Inline-
  724. Funktionen wie normale Funktionen aufzurufen. Der Debugger kann dann
  725. auch den Quelltext dieser Inline-Funktionen anzeigen und im Einzel-
  726. schrittmodus abarbeiten.
  727. Dabei stört es nicht, dass Inline-Funktionen meistens in den Header-
  728. Dateien der Module zu finden sind. 
  729.  
  730.  
  731. [3mIgnorieren von Exceptionspezifizierern[0m
  732.  
  733. Für die Testphase oder Sicherheitsfanatiker bietet C++ die Möglich-
  734. keit eine Funktion (auch Memberfunktionen einer Klasse) mit
  735. sogenannten Exceptionspecifier auszustatten: Mit Hilfe des Schlüssel-
  736. worts <throw> hinter dem Funktionsprototyp wird eine Liste von 
  737. Exceptions angegeben, die durch diese Funktion höchstens ausgeworfen
  738. werden. Alle anderen Expcetions werden als unerwartete Exception
  739. behandelt.
  740.  
  741. Dafür muss der Compiler um jede Funktion mit Excpetionspecifier einen
  742. "try-Block" setzen, der alle erlaubten Exception auffängt und wieder
  743. auswirft, aber alle anderen Exceptions abfängt und die Funktion 
  744. unexpected() aufruft. Dieser zustäzliche "try- Block" macht das 
  745. Programm länger und etwas langsamer.
  746.  
  747. Es empfiehlt sich deshalb nach ausreichender Testphase den Compiler
  748. anzuweisen diese Exceptionspecifier zu ignorieren. Das Programm wird
  749. dadurch unter Umständen drastisch kürzer.
  750.  
  751. [3mCodefolding (Fold Common Code)[0m
  752.  
  753. Der StormLink ist in der Lage, einige Optimierungen, die ein Compiler
  754. macht, auch im fertigen Programm durchzuführen. Dazu gehört auch das
  755. Entfernen von mehrfach vorhandenem Code.
  756.  
  757. Wenn der StormLink zwei Routinen entdeckt, die identisch sind, so
  758. daß es keinen Unterschied macht, ob das Programm die erste oder die
  759. zweite aufruft, ersetzt der StormLink die zweite Routine durch den
  760. Code der ersten. Wer behauptet, daß er ja selber programmiert und
  761. sowas nicht macht, bitteschön. Aber nicht wundern, wenn bei der
  762. Benutzung von Templates das Programm immer länger und länger wird.
  763. Da diese Option einiges an Laufzeit kostet, ist ihre Benutzung auch 
  764. nur dann zu empfehlen, wenn der Optimizer des Compilers auf der 
  765. höchsten Stufe steht. 
  766.  
  767. [3mErsetzung von nichtvorhandenen Funktionen[0m
  768.  
  769. Diese Option wurde zur Unterstützung des sogenannten Rapid Prototyping
  770. implementiert. Generieren Sie einfach eine Funktion mit dem Namen 
  771. 2_stub", schalten die genannte Option ein und programmieren drauflos.
  772. In der Stub-Funktion sollte vielleicht eine Debugausgabe gemacht oder
  773. ein Dialog mit entsprechendem Hinweis: "Funktion noch nicht implemen-
  774. tiert" ausgegeben werden.
  775.  
  776.  
  777. [3mAnbinden von Binärdateien[0m
  778.  
  779. Die neuen Linkereigenschaft, Binärdateien anbinden zu können, fand
  780. man bisher eigentlich nur bei Assembler-Entwicklungssystemen. In 
  781. StormC 1.1 wurde sie zur StormWIZARD-Unterstützung integriert, kann 
  782. aber auch für andere Zwecke genutzt werden.
  783.  
  784. Bei Aktivierung der Option "Binde WIZARD-Datei" wird die in der
  785. Projektverwaltung enthaltene Wizard-Datei an das Programm gelinkt.
  786. Damit die Daten korrekt initialisiert werden können, muss selbst-
  787. verständlich ein Symbolname für den Datenhunk angegeben werden. Die
  788. Initalisierungs-Routine für die Wizard-Daten kann dann die an das 
  789. Programm angehängte Datei initialisieren.
  790.  
  791. [3mNeue Debugger-Kontrollmöglichkeit[0m
  792.  
  793. Mit der neuen Version kann zum Projekt gespeichert werden, ob das
  794. Ressource-Tracking prinzipiell aktiv sein soll oder nicht. Bei 
  795. einigen Projekten ist es nicht ratsam, das Ressource-Tracking zu 
  796. aktivieren, da vielleicht selbst derartige Patches vorgenommen 
  797. werden oder eventuell das Anfordern und Freigeben von Ressourcen 
  798. auf mehrere unabhänige Tasks verteilt ist.
  799.  
  800. Mit dem Cycle-Gadget im Optionen-Feld kann eingestellt werden, wie 
  801. sich der Debugger beim Starten verhalten soll. Mit der Einstellung 
  802. "Debugger im Single-Step-Modus starten", kann ab sofort auch der
  803. Startup-Code untersucht werden.
  804.  
  805.  
  806. [3mGoldED alternativ nutzbar![0m
  807.  
  808. Der wohl zur Zeit einzige Editor mit allen nur erdenklichen Features
  809. ist der GoldED. Daher entschieden wir uns, diesen als alternativen 
  810. Editor an unser Entwicklungssystem anzupassen. Es genügt das 
  811. Merkmal GOLDED=TRUE einzutragen und anstelle von StormED wird GoldED
  812. gestartet. Für viele von ihnen ist die Editorfunktionalität mitver-
  813. antwortlich bei der Kaufentscheidung. Durch die Einbindung von 
  814. GoldED dürfte für viele die Entscheidung getroffen sein. 
  815.  
  816. [3mStormEd Farbeinsteller[0m
  817.  
  818. Vielfach gewünscht, ist es nun in der aktuellen Version einfach 
  819. möglich, die farbliche Textdarstellung mit der Maus zu verändern. 
  820. Die einfache Einstellmöglichkeit löst damit die bislang komplizierte
  821. Angabe der Vorder- und Hintergrundfarbe in der jeweiligen Settings-
  822. Datei ab. 
  823.  
  824. [3mKlammern-Check und Blockeinrückung[0m
  825.  
  826. Die automatische Ueberprüfung der Klammernstruktur ist sehr hilfreich
  827. bei tief geschachtelten Konstruktionen. All zu leicht wird eine 
  828. Klammer vergessen und man erhält eine Fehlermeldung, die nicht
  829. unbedingt auf eine fehlende Klammer schließen lässt. Auch bei der
  830. Programmierung von Installer-Skripten ist diese Funktion sehr 
  831. hilfreich. 
  832.  
  833. [3mNew - Projekttemplate[0m
  834.  
  835. Genau wie beim Hinzufügen neuer Texte zu einem Projekt wird beim 
  836. Neuanlegen eines Textes bereits der Speicherort erfragt. Mit der 
  837. dabei angegebenen Dateiendung kann dann das entsprechende Template
  838. für den neuen Text geladen und verwendet werden. 
  839.  
  840. [33mStormRun[28m
  841.  
  842. [3mHistory- und Breakpointfenster[0m
  843.  
  844. Im Debugger StormRUN werden alle Debuggschritte protokolliert und
  845. können im History-Fenster zurückverfolgt werden. Das neue Breakpoint-
  846. Fenster zeigt alle gesetzten Unterbrechungspunkte. Per Doppelklick
  847. kann gezielt an die jeweilige Programmstelle gesprungen werden. 
  848. Selbstverständlich ist es möglich, einzelne oder alle Unterbrechungs-
  849. punkte zu löschen. 
  850.  
  851. [33mStormC[28m
  852.  
  853. [3mNeue Optimierungsstufen[0m
  854.  
  855. Bei großen Projekten ist die Turnaroundzeit oft sehr entscheidend
  856. für die Nutzung eines Compilers. Um die Wartezeiten beim Kompilieren
  857. und Linken zu verkürzen, wurde eine neue Optimierungstufe
  858. implementiert die besonders  schnell Code generiert, dabei aber
  859. keinen Wert auf die Codequalität legt.
  860.  
  861. Auch der neue Linker konnte um den Faktor 2 deutlich beschleunigt
  862. werden und steuert seinen Teil zu besonders kurzen Turnarounds bei! 
  863.  
  864. [3mNeues Schlüsselwort "__saveds"[0m
  865.  
  866. Was bisher mit der Funktion "geta4" manuell konvertiert werden
  867. mußte, ist in der neuen Version zur besseren Kompatibilität
  868. integriert.
  869.  
  870.  
  871. [33mStormLibrarian[28m
  872.  
  873. [3mEinfache Erzeugung von Linker-Bibliotheken[0m
  874.  
  875. Nicht nur die Erzeugung von Shared-Libraries ist eine wichtige
  876. Bedingung für ein echtes Entwicklungssystem, sondern auch die
  877. Möglichkeit, Funktionsgruppen in einer Linkerbibliothek zusammen-
  878. fassen zu können. Bei der Erzeugung von Bibliotheken wie beispiels-
  879. weise der Amiga.Lib oder der Storm.Lib muß bereits beim Kompilieren
  880. der Module darauf geachtet werden, dass jede Funktion am Besten in
  881. einem eigenen Hunk abgelegt wird. Der Compiler bietet dazu die Option
  882. "Eigener Hunk für jede Funktion". Nach dem Kompilieren müssen die
  883. einzelnen Module zu einer Library "gejoint" werden, was lästige
  884. Tipparbeit bedeutet.
  885.  
  886. Unser neuer StormLibrarian hilft Ihnen dabei und bietet die Möglich-
  887. keit Objektmodule zu Library-Projekten zusammenzufassen. Haben Sie 
  888. Ihr Projekt erstellt, genügt ein einfacher Klick auf "Erzeugen" und
  889. die Bibliothek wird unter dem angegebenen Namen erzeugt. Bei
  890. Veränderung der Objektmodule muß nun lediglich das Projekt in den
  891. StormLibrarian geladen und die Bibliothek neu erzeugt werden - fertig!
  892.  
  893.  
  894. [7mDie Häufigsten Fragen und ihre Antworten!
  895. *****************************************[0m
  896.  
  897. Frage 1:
  898. ********
  899. [7m[33mWarum hat StormC keinen "Global Optimizer"?[28m[[0m
  900.  
  901. Antwort:
  902.  
  903. Ein "Global Optimizer" optimiert ein Programm unter Beachtung der 
  904. ganzen Funktion und nicht nur einzelner Anweisungen oder Ausdrücke. 
  905. Dadurch kann ein Global Optimizer z.B. Ausdrücke, die in einer 
  906. Schleife ausgewertet werden, aber in jedem Scheifendurchlauf immer 
  907. das gleiche Ergebnis liefern müssen, aus der Schleife herausziehen 
  908. und schon vor der Schleife bearbeiten.
  909.  
  910. StormC kann diese globale Optimierung bislang nicht, ist allerdings
  911. schon in Version 1 dazu vorbereitet, in einer der nächsten Versionen 
  912. auch diese Optimierung zu beherrschen.
  913.  
  914. Allerdings kann StormC schon jetzt einige Optimierungen, die auch 
  915. Aufgaben des Global Optimizers sind. Dazu gehört insbesondere die 
  916. globale CPU und FPU Registerverteilung in den höheren Optimierungs-
  917. stufen. Die Register werden in der ganzen Funktion unter Beachtung 
  918. aller Variablenzuweisungen  und Funktionsaufrufe in der Funktion 
  919. optimal verteilt.
  920.  
  921. Frage 2:
  922. ********
  923.  
  924. [7m[33mWarum ist selbst ein kleines Programm wie "Hello World" gleich
  925. mehrere KBytes lang?[28m[0m
  926.  
  927. Antwort:
  928.  
  929. Die mitgelieferte StormC Bibliothek "storm.lib" ist eine ANSI C 
  930. Bibliothek.
  931.  
  932. Für ein "Hello World" Programm muß aus dieser Bibliothek die "printf"
  933. Funktion gelinkt werden. Dadurch kommen aber auch unbenutzte 
  934. Funktionen z.B. für die Ausgabe von Integer und Fließkommazahlen ins 
  935. Programm, da aus dem "printf" Befehl nicht ersichtlich ist, welche
  936. der Umwandlungen nötig sind. Außerdem werden alle Ausgaben in Dateien
  937. gepuffert durchgeführt.
  938.  
  939. Dadurch werden auch kurze Programm relativ groß.
  940.  
  941. Benutzen Sie bitte für ANSI-C-Programm unsere mitgelieferte 
  942. "stormamiga.lib"
  943.  
  944. Frage 3:
  945. ********
  946. [7m[33mWie kann ich denn ein "Hello World" Programm unter Nutzung der
  947. Storm.Lib wirklich kurz kompilieren?[28m[0m
  948.  
  949. Antwort:
  950.  
  951. Kann man auf Fließkommaausgabe verzichten und reicht einem die
  952. Pufferung des AmigaDOS aus, kann man jederzeit zur Ausgabe das
  953. AmigaDOS direkt verwenden. Die Funktionen "VPrintf" und "VFPrintf"
  954. ermöglichen nämlich direkt die Ausgabe ähnlich wie "printf" auf 
  955. AmigaDOS Dateien. Allerdings sind diese Funktionen nicht 100% ANSI 
  956. kompatibel.
  957.  
  958. Weitere Möglichkeiten bietet natürlich der Verzicht auf das auto-
  959. matische Öffnen und Schließen der Bibliotheken, denn die dazu 
  960. benutzten Funktionen bieten eine komfortable Fehlermeldungsausgabe 
  961. mit Unterscheidung zwischen Workbench und CLI Start eines Programms 
  962. und Beachtung alter Betriebssystemversionen 1.3 und älter. Dieser 
  963. Komfort ist nicht für jedes Programm notwendig.
  964.  
  965. Man kann einen Minimalstartupcode, den man in Assembler schreibt als
  966. eigenen Startupcode benutzen und darin nur die notwendigsten Arbeiten
  967. erledigen, z.B. das kleine Datenmodell unterstützen ohne gleichzeitig
  968. residente Programme zu erlauben.
  969.  
  970. Frage 4:
  971. ********
  972. [7m[33mWarum kompiliert der MaxonC++ Compiler schneller als StormC?[28m[0m
  973.  
  974. Antwort:
  975.  
  976. StormC erzeugt sauberen optimierten Code mit optimaler Registerbe-
  977. nutzung und vielfältigen Optimierungen. Außerdem ist StormC konsequent
  978. auf den PowerPC vorbereitet und verzichtet deshalb auf den Einsatz
  979. schneller aber fehleranfälliger Assemblerroutinen. Leider ist darum
  980. die derzeitige Version des Compilers nicht so schnell wie MaxonC++,
  981. allerdings arbeiten wir an einer speziellen Optimierzerstufe für die
  982. Entwicklungsphase eines Programms mit noch kürzeren Übersetzungszeiten.
  983.  
  984. Frage 5:
  985. ********
  986. [7m[33mWarum ist die Bibliothek "storm.lib" so groß und warum gibt es im
  987. Gegensatz zu SAS/C nur eine Bibliothek?[28m[0m
  988.  
  989. Antwort:
  990.  
  991. StormC unterstützt ein weiterentwickeltes Objektformat, das auch bei
  992. Linkerbibliotheken zum Einsatz kommt. Dieses Format ist 100%
  993. kompatibel zum alten (sowohl aufwärts, wie auch abwärts), allerdings
  994. können der StormC Linker und der StormC Compiler mit diesem Format
  995. mehrere Datenmodelle in einer Objektdatei aufnehmen. Damit bleibt
  996. für Sie nicht mehr die fehleranfällige Auswahl der richtigen 
  997. Bibliothek zu ihren gewählten Compileroptionen, sondern der Linker
  998. wählt aus der großen Bibliothek "storm.lib" die Teile aus, die für
  999. das gewählte Datenmodell (großes Datenmodell oder eines der beiden
  1000. kleinen Datenmodelle) gerade paßt. Deshalb ist die "storm.lib" etwa
  1001. so groß, wie drei einzelne Bibliotheken für jedes Datenmodell
  1002. zusammen.
  1003.  
  1004. In Zukunft wird StormC auch noch verschiedene Codemodelle und CPU 
  1005. bzw. FPU Modelle in der Bibliothek unterstützen, sodaß die 
  1006. "storm.lib" und alle weiteren Bibliotheken jeweils optimale 
  1007. Programmeerzeugung automatisch erlauben.
  1008.  
  1009. Frage 6:
  1010. ********
  1011. [7m[33mWarum kommt es zu der Linker-Fehlermeldung "Symbol _exit nicht
  1012. definiert", wenn man als Shared-Library linkt?[28m[0m
  1013.  
  1014. Antwort:
  1015.  
  1016. Die Shared-Library ruft die ANSI-Funktion exit() auf. Das kann sie 
  1017. zum einen explizit, weil Sie diese Funktion verwenden, oder zum 
  1018. anderen implitzit durch Linker-Bibliotheken, die diese Funktion 
  1019. verwenden. Die "Storm.Lib" nutzt diese Funktion beim automatischen
  1020. Öffnen der benutzten Shared-Libraries, z.B. der "utility.library".
  1021.  
  1022. Grundsätzlich darf aber eine Shared-Library die Funktion exit() nicht
  1023. verwenden, da sie nicht einfach so beendet werden kann.
  1024.  
  1025. Wie vermeidet man den Aufruf?
  1026.  
  1027. Man darf das automatische Öffnen von benutzten Shared-Libraries nicht
  1028. verwenden, sondern muß die Bibliotheken wie im Handbuch beschrieben,
  1029. öffnen und schließen.
  1030.  
  1031. Um herauszufinden, welche Bibliotheken alle benutzt werden, sollte 
  1032. man zuerst eine Funktion:
  1033.  
  1034. void exit() {} in die Shared-Library aufnehmen. Jetzt läßt sich die
  1035. Library linken.
  1036.  
  1037. Verwenden Sie die Linker-Option "Map-Datei schreiben". Der Linker
  1038. erzeugt eine Datei mit der Endung ".map". Suchen Sie alle INIT-
  1039. Funktionen, die den Basisnamen einer Shared-Library enthalten,
  1040. z.B. INIT_1_UtilityBase.
  1041.  
  1042. Öffnen Sie diese Bibliotheken nun alle mit Ihren eigenen Routinen.
  1043. Denken Sie auch daran, die entsprechende Basisvariable (z.B. 
  1044. UtilityBase) selbst zu deklarieren. Vergessen Sie nicht, die eigene 
  1045. exit()-Funktion wieder aus Ihrem Source zu entfernen.
  1046.  
  1047.  
  1048. Fehler im Zusammenhang mit MagicMenu und möglicherweise mit SUN-Mouse-Utilities
  1049. -------------------------------------------------------------------------------
  1050.  
  1051. Bei installiertem MagicMenu friert der Bildschirm ein, wenn bei aktivem 
  1052. Piktogramm-Fenster die rechte Maustaste gedrückt wird und sich der
  1053. Mauszeiger über einem Piktogramm befindet. Durch eine Inkonformität von MagicMenu 
  1054. werden Mousemove-Nachrichten geschickt, obwohl die rechte Maustaste gedrückt
  1055. ist. In diesem Fall versucht dann die StormShell die Hilfezeile im Fenster
  1056. auszugeben und erzeugt dadurch das Einfrieren des Bildschirms. Im Falle von 
  1057. MagicMenu dauert es ca. 10 Sekunden und man kann normal weiterarbeiten.
  1058.  
  1059. Zu ähnlichen Problemen kann es auch mit verschiedenen SUN-Mouse Utilities 
  1060. kommen.
  1061.  
  1062. Bei Fragen wenden Sie sich bitte an:
  1063.  
  1064.       HAAGE & PARTNER Computer GmbH
  1065.       Mainzer Straße 10A
  1066.       61191 Rosbach v.d.H.
  1067.  
  1068.       Tel: 06007/930050
  1069.       Fax: 06007/7543
  1070.  
  1071.       Compuserve: 100654,3133
  1072.       Internet: 100654.3133@compuserve.com
  1073.       Web Page: http://ourworld.compuserve.com/homepages/haage_partner
  1074.  
  1075.  
  1076.  
  1077. Zum Schluß möchten wir uns bei unseren aktiven Betatestern bedanken.
  1078.  
  1079. Vielen Dank an:
  1080.  
  1081.     Dietmar Augustin
  1082.     Olaf Barthel
  1083.     Holger Burkarth
  1084.     Thomas Bayen
  1085.     Bernhard Büchter
  1086.     Jan-Claas Dirks
  1087.     David Göhler
  1088.     Alexander Pratsch
  1089.     Andreas Pfohl
  1090.     Constantin Rack
  1091.     Michael Rock
  1092.     Jürgen Schildmann
  1093.     Carsten Schlote
  1094.     Stephan Schüerholz
  1095.     Thomas Wilhelmi
  1096.  
  1097.  
  1098. (c) 1995/1996 HAAGE & PARTNER Computer GmbH
  1099.  
  1100.